package com.webserver.http;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * HttpContext  封装当前服务器得有关得静态环境信息
 * -文件类型映射  (mime-mapping)  是静态坏境信息
 *
 */
public class HttpContext {
    /*
     * 全部用户共享得  文件类型映射 集合
     *
     */
    private static Map<String,String> mimeMapping = new HashMap<>();

    static {
        initMimeMapping();
    }
    /*
     * 定义初始化方法,封装,mimeMapping集合得初始化过程
     *
     */
    private static void initMimeMapping(){

        try {
            File file = new File("config/web.xml");
            SAXReader reader = new SAXReader();
            Document doc = reader.read(file);
            System.out.println(doc.asXML());//打桩输出
            Element root = doc.getRootElement();
            List<Element> elments = root.elements("mime-mapping");
            for (Element e : elments) {
                System.out.println(e.asXML());//打桩输出
                String ext = e.elementTextTrim("extension");
                String type = e.elementTextTrim("mime-type");
                mimeMapping.put(ext,type);
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);

        }

    }

    /**
     * 根据文件得扩展名,检查其对应得  媒体类型  (mime type)
     *  如: ext是png 则返回  image/png
     * @param ext 扩展名
     * @return    mime
     */
    public static String getMimeType(String ext){
        return mimeMapping.get(ext);
    }

    public static void main(String[] args) {
        //JVM  加载  HttpContext 时候就会自动初始化 mimeMapping
        System.out.println(mimeMapping);
    }

}
